home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
Weubblers handler.adf
/
Docs
/
beschreibung.bak
< prev
next >
Wrap
Text File
|
1989-01-25
|
16KB
|
348 lines
Dos-Handler V2.2
(c) 1988 by Frank Wuebbeling
Produktbeschreibung
1. Einleitung
Leider hat sich Commodore-Amiga bei der Festlegung eines Diskettenformats
fuer diesen Computer fuer einen Alleingang entschieden und ein (relativ) in-
kompatibles gewaehlt. Daher gab es (auch fuer mich) bei der Konvertierung von
Fremdfiles auf den AMIGA bisher immer erhebliche Probleme. Insbesondere ist
es extrem laestig, Files auf einem PC zu erstellen, auf den AMIGA zu kon-
vertieren, dort zu bearbeiten, wieder auf den PC zurueckzukopieren usw... Und das
alles ueber RS232? Dies Programm soll hier Abhilfe schaffen. Es versetzt
AMIGADOS in die Lage, 3 1/2 Zoll-Disketten mit seinen normalen Kommandos zu
verwalten. Alle Programme, die die Angabe von Laufwerkskennzeichnungen
erlauben, koennen direkt mit den PC-Disketten arbeiten. Ausserdem ist es in
der Lage, Amiga-Disketten selbstaendig zu erkennen und gibt diese direkt
ans DOS weiter. Somit muss der Typ einer eingelegten Diskette nicht bekannt
sein, ein <DIR NW0:> bringt in jedem Fall das gewuenschte Ergebnis.
2. Die Programme
Auf dieser Diskette befinden sich 3 Programme und mehrere Utilities:
1.) handler/amigados: Dies ist das zentrale Steuerprogramm fuer das gesamte
Paket. Es wird mit run aufgerufen und installiert einen Port, an den
saemtliche anderen Programme Anfragen richten. Es ist das einzige Programm,
das auf die Diskette direkt zugreift, so dass keine Intertask-Probleme
auftreten koennen. Wird es zweimal installiert, wird mit einer Fehlermeldung
abgebrochen. Wird ein anderes Programm aufgerufen, ohne dass amigados
installiert ist, wird dieses mit Fehlermeldung abgebrochen.
Amigados vereinfacht alle Diskzugriffe erheblich. Es ermoeglicht unter
anderem folgende Zugriffe mit einfachen (!) Befehlen, ohne dass vorher
Libraries o.ae. geoeffnet werden muessen:
o Einfache Routinen zum Verwalten von Schreibschutz und DiskChange-
zaehlern.
o Direkter Trackzugriff auf die uncodierten Trackdaten.
o Routinen zum Codieren/Decodieren der Rohdaten einer Amiga- bzw.
PC-Diskette.
o Direktes Schreiben auf alle angeschlossenen Drives gleichzeitig.
o Einfaches Installieren von DiskChange-Handlern.
o Verwaltung von Memory-Listen, die beim Abbruch selbstaendig
geloescht werden.
o Automatische Requester im Fehlerfall.
usw., die Beschreibungen befinden sich in Support.doc. Wermutstropfen:
Die Routinen zum Ansprechen von amigados koennen nur aus AZTEC C (c) 3.6
direkt genutzt werden.
2.) l/newhandler: Dies ist das eigentliche Device. Dem System muss in der
mountlist mitgeteilt werden, dass es fuer einen bestimmten Drivenamen
verantwortlich ist. ACHTUNG: Nach mount wird noch nicht der Code fuer
einen handler geladen, dies passiert bei der ersten Benutzung.
3.) handler/inhibit: Falls Sie schon einmal unlesbare Disketten in den Amiga
eingelegt haben, wissen Sie, dass es meist 10 Sekunden dauert, bis das
Betriebssystem das merkt. Inhibit schaltet bei jedem Diskettenwechsel
zunaechst den Pruefprozess des Betriebssystems ab und testet selbst den
Typ der eingelegten Diskette. Ist es der Meinung, dass es sich um eine
Amiga-Diskette handelt, wird der Prozess wieder eingeschaltet und die
Diskette normal verifiziert, andernfalls eben nicht und das
Betriebssystem meldet beim Zugriff auf DF0 (oder DF1..., je nachdem)
nur ERROR_NOT_A_DOS_DISK. Bemerkung: Dies Programm ist zum Betrieb des
Handlers zwar nuetzlich, aber nicht notwendig. Sollten Sie in Speicherplatz-
noeten sein, lassen Sie es einfach weg. Installation mit run handler/inhibit.
2. Aufruf:
Zum Aufruf des Handlers sollten sich die Programme mount und run Ihrer
Workbench im c:-Ordner befinden. Ausserdem sollten Sie dort amigados und
inhibit installiert haben. Im l:Ordner muss sich der newhandler befinden,
und an das File devs:mountlist muss folgende Sequenz angehaengt worden sein:
NW0: Handler = l:newhandler
Stacksize = 5000
Priority = 5
GlobVec = 1
#
NW1: Handler = l:newhandler
Stacksize = 5000
Priority = 5
GlobVec = 1
#
NW2: Handler = l:newhandler
Stacksize = 5000
Priority = 5
GlobVec = 1
#
NW3: Handler = l:newhandler
Stacksize = 5000
Priority = 5
GlobVec = 1
#
Um dies sicherzustellen, lesen Sie bitte zunaechst installation.doc
und fuehren Sie die Anweisungen dort durch.
Nun zum mountlist-File: Die einzige fuer Sie wichtige Zeile ist die erste
jedes einzelnen Eintrags. Hier steht dann z.B:
NW0: Handler = l:newhandler
Dies bedeutet: Falls irgendwann <mount nw0:> aufgerufen wird, installiere
ein neues Device mit dem Namen nw0:. Das Programm, das dies Device zur Verfuegung
stellt, heisst newhandler und befindet sich im Ordner l:.
Wird dann anschliessend dies Device benutzt, z.B. aus einer Shell heraus
mit <dir nw0:>, wird l:newhandler geladen und ihm der Name nw0: als Parameter
uebergeben. Er analysiert diesen dann und erkennt AN DEM 3. ZEICHEN,
dass er sich als Handler fuer das Laufwerk df0: installieren soll. Entsprechend
ist nw1: fuer df1: zustaendig usw.
Die ersten beiden Zeichen sind fuer den Handler voellig bedeutungslos,
d.h. Sie koennen das neue Device auch pc0: oder bb1: nennen, wichtig ist nur
dass eine Ziffer, die das Laufwerk angibt, zwei Buchstaben folgt. Bemerkung:
Diese Einschraenkung ist systembedingt. Wenn die inliegende Diskette eine
Amiga-Diskette ist, wird der Devicename in dfn: geaendert und an das Betriebs-
System geschickt.
Aber weiter im Text: Wenn alles installiert ist, tippen Sie
<RUN AMIGADOS> und warten, bis die Meldung ausgegeben wird:
amigados failed returncode nnn
oder
amigados successfully installed
Im ersten Fall war wohl entweder nicht mehr genug Speicher vorhanden oder
amigados war bereits installiert. Im zweiten Fall hat amigados sich erfolgreich
im Speicher festgesetzt und Verbindung zum Trackdisk-Device bekommen.
Falls amigados richtig installiert wurde, haben sie vermutlich eine Meldung
der Form
Drive n could not be opened
erhalten fuer alle Drives, die nicht angeschlossen sind. Dies ist lediglich
eine Informationsmitteilung, amigados versucht bei Aufruf ohne Parameter
sich Zugriff auf alle 4 moeglicherweise angeschlossenen Drives zu verschaffen.
Ist ein Drive nicht verfuegbar (vermutlich weil nicht vorhanden), erhaelt
man obige Message. Dies kann verhindert werden durch den Aufruf
<RUN AMIGADOS n>, hierbei steht n fuer die Zahl der angeschlossenen
Diskettenlaufwerke.
Falls Sie ein Laufwerk besitzen, das nicht vom trackdisk.device verwaltet
wird, geben Sie bitte den Namen des Devices und dann die Nummer des zugehoerigen
Laufwerks an. Beispiel: Sie besitzen 3 Laufwerke, 0 und 1 werden vom trackdisk.
device verwaltet, 2 von other.device. Der Aufruf lautet dann korrekt:
<RUN AMIGADOS 3 "other.device" 2>.
Tippen Sie nun <mount nw0:>, oder welchen Namen auch immer Sie vergeben
haben. Erhalten Sie hier eine Fehlermeldung, stimmt vermutlich Ihre mountlist
nicht. Bitte ueberpruefen Sie die Eintraege dort noch einmal.
Das Device ist jetzt ins System eingebunden, aber noch nicht geladen.
Sprechen Sie es nun z.B. durch <dir nw0:> an. Dadurch wird zunaechst der
Code in den Speicher geholt und dann das Directory der in Drive 0 inliegenden
Diskette ausgegeben, das duerfte nun natuerlich eine Amiga-Diskette sein.
Stellen Sie nun sicher, dass sich irgendwo in ihrer Reichweite ein
DIR-Befehl befindet, zum Beispiel auf der Ramdisk oder in einer Shell. Wechseln
sie dann die Disketten und legen sie eine PC-Diskette ein. Es dauert nun einige
Zeit bis das Betriebssystem diese Diskette freigibt. Warten Sie diese Zeit ab,
und VOILA! (hoffentlich) <DIR NW0:> zeigt das Inhaltsverzeichnis der PC-Diskette.
Wollen Sie nun noch das Betriebssystem am Verifizieren von PC-Disketten
hindern, tippen Sie <run inhibit> und das Problem des Wartens nach dem Disketten-
wechsel sollte geloest sein.
Selbstverstaendlich koennen Sie nun auch die anderen Laufwerke durch
<mount nw1:> usw. als PC-Laufwerke installieren. Bedenken Sie aber, dass sich
dadurch der Speicherbedarf erhoeht.
3. Benutzung: Naja... Wie ein normales Laufwerk eben. Die normalen Disk-Kom-
mandos sind jetzt fuer das neue Device verwendbar, versuchen sie also mal makedir,
dir, rename, delete usw. Sie koennen das neue Geraet aber auch aus Editoren an-
sprechen, z.B. z nw0:autoexec.bat oder was auch immer.
Das Laufwerk sollte sich immer wie die normalen Laufwerke df0, df1 usw.
verhalten, mit einigen Ausnahmen:
1. (vielleicht die wichtigste:) Die Amiga-Laufwerke arbeiten relativ unsicher.
Beim Erstellen des Programms hatten wir mindestens 10 von den Laufwerken ruinierte
Disketten zu verkraften. Da auf Amiga-Disketten alle Files doppelt verkettet sind,
ist es normalerweise (!) immer moeglich, jedes File zu retten und die darin
enthaltenen Informationen auf eine andere Diskette zu kopieren.
PC-Laufwerke arbeiten dagegen relativ sicher (?), zumindest sind DiskErrors,
die gleich zur Folge haben, dass es nicht mehr moeglich ist mit der Disk zu
arbeiten, relativ selten. Wohl deshalb haben die Schoepfer des PC-Diskformats
die Einrichtung von Schutzmassnahmen fuer ziemlich ueberfluessig gehalten,
eine PC-Diskette, bei der die FAT kaputt ist, ist wertlos. Deshalb ist diese
zwar auf jeder Diskette zweimal vorhanden, sinnigerweise aber auf demselben Track,
d.h. wenn der Amiga zerstoert, tut er das gleich gruendlich und ruiniert beide
Versionen. Konsequenz ist daher: Wenn Sie haeufig mit newhandler Disketten
BESCHREIBEN (beim Lesen ist das egal), benutzen Sie entweder hochwertige Disketten
(obwohl man auch da schon Fehler bekommen hat) ODER (mein Tip) machen Sie haeufiger
mal eine Sicherheitskopie, ein Kopierprogramm liegt bei. Dies schuetzt auch vor
Fehlern, die dadurch entstehen, dass Amiga-Laufwerke haeufig viel zu langsam
laufen (Uebrigens ein sehr unangenehmes Phaenomen, einige PCs haben auf den
innersten Spuren Schwierigkeiten mit AMIGA-Disketten mit sehr hoher Schreib-
dichte, benutzen Sie zur Feststellung der Trackkapazitaeten TrackCap).
2. Amiga-Disketten haben grundsaetzlich einen Namen, PC-Disketten oft nicht.
Der Name dieser Disketten ist dann der Name des Laufwerks (also z.B. nw0:).
3. Amiga-Disketten koennen eindeutig identifiziert werden. Sie erhalten also
die Aufforderung <Please insert Disk xxxxxxxxxx in any Drive> wenn Sie eine
Diskette ansprechen, die augenblicklich nicht verfuegbar ist. Da PC-Disketten
ueber ihre MagicNumber identifiziert werden, erhalten Sie hier die Aufforderung
<Please insert Disk with MagicNumber %%%%%% in Drive %%%.> Da die MagicNumber
normalerweise fuer den Benutzer transparent ist, muessen Sie evtl. hier aus-
probieren welche Diskette gemeint ist; im allgemeinen duerfte das aber klar sein.
Ausserdem muessen Disketten immer wieder in den Drive eingelegt werden, in dem
sie auch benutzt wurden, d.h. eine Diskette, die ein Lock auf Drive nw0:
erhaelt, wird in Drive nw1: nicht erkannt.
Wenn die Aufforderung mit Anfuehrungszeichen abgeschlossen wird, sollte
die angeforderte Diskette UNBEDINGT! in den Drive eingelegt werden, es sind
dann Trackdaten noch nicht zurueckgeschrieben worden.
P.S.: Alle Requester interpretieren einen Diskwechsel als einen Klick auf
ok. Nach einem OK-Klick wird eine Operation wiederholt, es sei denn, sie war
fatal fuer den Handler. Nach einem QUIT-Klick wird die Operation abgebrochen.
(In diesem Fall wird uebrigens immer ein ERROR_ACTION_NOT_KNOWN an das auf-
rufende Programm abgesetzt, normalerweise sollten alle Programme in der Lage
sein das zu verstehen.)
4. Die PC-Laufwerke sind fuer die Workbench unsichtbar. Das macht aber nichts,
da die eingelegten Disketten wohl ohnehin keine Icons enthalten.
5. Die Namen-Laenge und das Format des Filenamens sind bei PC-Disketten
staerker festgelegt als auf dem AMIGA. Bei der Uebertragung eines AMIGA-Namens
wird deshalb rigoros gekuerzt, bis ein PC-Filename entsteht. Beispiele:
hallo --> HALLO
hallo.prog --> HALLO.PRO
hallo.progr --> HALLO.PRO
hallofrank --> HALLOFRA
usw.
6. Fuer die Pfadnamen gelten die AmigaDos-Konventionen, d.h. der Slash /
trennt die Pfade, ein vorangestellter : fuehrt ins RootDirectory, ein voran-
gestellter / fuehrt ins Parent-Directory.
7. In Sub-Directories sind die Directory-Namen . und .. gueltig, sie werden
aber in Directories nicht aufgefuehrt um rekursive Directory-Listings zu er-
lauben.
4. Die Utilities:
Alle Utilities stehen im handler-Ordner der Diskette und noch einmal im C-
Ordner. Sie sollten von dort auf die Bootdiskette kopiert werden, falls
sie oefter benoetigt werden.
1. MsFormat: Formatiert Disketten im PC-Format. Das Programm akzeptiert zwei
Parameter, der erste bestimmt den Drive auf den geschrieben werden soll,
der zweite gibt die Anzahl der Sektoren pro Track an (<=10!!!). Standard-
Voreinstellungen sind 10 Sektoren auf Disk 0. MsFormat verifiziert nicht,
lesen Sie die Beschreibung zu SafeFormat.
Beispiel: <MsFormat 10 0>
2. MultFormat: Wie MsFormat, akzeptiert als Parameter aber nur die Anzahl der
Sektoren pro Spur. Formatiert auf allen angeschlossenen Drives gleichzeitig.
Beispiel: <MultFormat 10>
3. MsCopy: Kopiert Disketten von PC-Format nach PC-Format. Kopiert nur von
Drive 0 nach Drive 1.
Beispiel: <MsCopy>
4. MultCopy: Wie MsCopy, kopiert aber von Drive 0 auf alle anderen
angeschlossenen Drives.
Beispiel: <MultCopy>
5. Shutdown: Schiesst amigados ab. Dieser Befehl entfernt amigados aus dem
Speicher und gibt alle seine Resourcen frei. ACHTUNG: Nach Anwendung dieses
Befehls wird der Port von amigados natuerlich ungueltig, d.h. jede Verwendung
eines Programms, dass bereits im Speicher installiert wurde und amigados
benutzt, wird bis in alle Ewigkeit auf Antworten von amigados warten.
Bitte benutzen Sie das Programm nur bei echter Speicherknappheit und wenn Sie
sicher sind, dass sie keines der unter newhandler laufenden Devices mehr benutzen
wollen. Benutzen Sie Shutdown AUF KEINEN FALL, wenn Sie inhibit installiert haben.
Beispiel: <ShutDown>
6. ToAtari: Liest von stdin ein Amiga-Textfile und gibt es im PC-Format wieder
aus, d.h. alle LineFeed werden durch CarriageReturn/LineFeed ersetzt. Beispiel
zum Uebertragen eines Amiga-Textfiles auf eine PC-Diskette:
Beispiel: "ToAtari <df0:AmigaFile >nw1:PCFile"
7. FromAtari: Wie oben, aber streicht alle CRs aus einem Text.
Beispiel: "FromAtari <nw1:PCFile >df0:AmigaFile"
8. ShowTrack: Zeigt die rohen Trackdaten einer eingelegten PC-Diskette an.
Ausgegeben werden zu jedem gelesenen Wort: 1. Das Wort selbst, 2. Seine
Standard-MFM-Decodierung. Zur naeheren Erlaeuterung siehe Technical.doc.
Zum Lesen von Track 0, Head 0:
Beispiel: "ShowTrack 0 0"
9. Format40: Formatiert im 40-Track-Format.
Format40 ist nur noch zu Demonstrationszwecken vorhanden, benutzen Sie zum
Formatieren von 40Track-Disketten SafeFormat.
10. SafeFormat: SafeFormat formatiert Disketten in Original-PC-Format, d.h.
auch die Media-Bytes werden korrekt geschrieben. SafeFormat akzeptiert 3
Parameter in beliebiger Reihenfolge:
Drive, der formatiert werden soll;
Anzahl der Tracks auf der neuen Diskette;
Anzahl der Sektoren pro Track.
SafeFormat verifiziert die geschriebenen Daten. Als korrekte MSDos-Formate
werden die Formate 80 Tracks, 9 Sektoren/Track und 40 Tracks, 9 Sektoren
/Track erkannt.
ACHTUNG: NUR DIESE FORMATE WERDEN VON MSDOS 3.1 ERKANNT. UM SICHER ZU GEHEN,
SOLLTEN SIE FUER MSDOS AUSSCHLIESSLICH DIESE FORMATE VERWENDEN.
Voreinstellung ist 80 Tracks, 10 Sektoren auf Disk 0.
Beispiel: "SafeFormat 0 40 9" fuer das Standardformat auf Drive 0
11. TrackCap: Ermittelt die TrackKapazitaet einer in Laufwerk 0 eingelegten
Diskette. Eine sehr hohe Kapazitaet kann zu Leseschwierigkeiten auf PC-Laufwerken
fuehren. Eine sehr niedrige Kapazitaet bringt u.U. Schreibfehler auf 10-
sektorigen Disketten, sie sollte daher nicht wesentlich unter 6230 Bytes
liegen (das gilt nur fuer die auf dem AMIGA formatierten oder beschriebenen
Disketten!)
Beispiel: "TrackCap"